package com.homework.papertexting.model;

import jakarta.persistence.*;
import lombok.Data; // 如果使用了Lombok
import org.springframework.security.core.GrantedAuthority; // 添加导入
import org.springframework.security.core.userdetails.UserDetails; // 添加导入

import java.util.Collection; // 添加导入
import java.util.Collections; // 添加导入

@Entity
@Table(name = "user")
@Data // 如果使用了Lombok，这里保留
// 让 User 类实现 UserDetails 接口
public class User implements UserDetails {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(unique = true)
    private String username;

    @Column(unique = true)
    private String email;

    private String password;

    // UserDetails 接口要求实现的方法：

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        // 这里返回用户的权限列表，例如可以返回一个表示"普通用户"的角色
        // 目前我们先简单返回一个空列表
        return Collections.emptyList();
    }

    @Override
    public String getPassword() {
        // 返回用户的密码字段 (这里已经加密了)
        return this.password;
    }

    @Override
    public String getUsername() {
        // 返回用户的用户名字段
        return this.username;
    }

    @Override
    public boolean isAccountNonExpired() {
        // 账户是否未过期，通常返回 true
        return true;
    }

    @Override
    public boolean isAccountNonLocked() {
        // 账户是否未锁定，通常返回 true
        return true;
    }

    @Override
    public boolean isCredentialsNonExpired() {
        // 凭证（密码）是否未过期，通常返回 true
        return true;
    }

    @Override
    public boolean isEnabled() {
        // 账户是否已启用，通常返回 true
        return true;
    }

    // 如果你没有使用 Lombok，请手动添加上面字段的 getter/setter 方法
    // 例如：
    /*
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    // ... 其他字段的 getter/setter
    */
}